# coding=utf-8

import web
import settings

import utils
import models
import controllers.admin.projects.models as proj_models
from forms import afflatus_form

render = settings.RENDER

class Delete(object):
    """
    旅游灵感的删除视图
    """
    def GET(self, id):
        id = utils.intval(id)
        # 删除是否成功的标记
        flag = 'false'
        # 删除是否成功
        if models.delete_afflatus_by_id(id):
            flag = 'true'
        # 转向到列表
        raise web.seeother('/afflatus?del=%s' % flag)


class Index(object):
    '''
    旅游灵感的列表
    '''
    def GET(self):
        ipt = web.input()
        # 当前页码
        page = utils.intval(ipt.get('page', '0'))
        # 每页记录数
        perpage = 20
        # 读取列表
        r = models.get_all_afflatus(page * perpage, perpage)
        # 创建分页器
        pager = utils.Pager(r.totalrecords
                , pageindex = page
                , pagesize = perpage)

        # 显示到页面的消息
        msg = None
        # 是否来自删除后的跳转
        fdel = ipt.get('del', None)
        if fdel:
            if utils.cmp_i(fdel, 'true') == 0:
                msg = '删除成功'
            else:
                msg = '删除失败'

        return render.admin.afflatus.afflatus(r, pager, msg)

class Add(object):
    '''
    旅游灵感添加
    '''
    def GET(self, id = '0'):
        f = afflatus_form()
        id = utils.intval(id)
        if id > 0:
            # 编辑模式
            # 尝试读取记录
            aff = models.get_afflatus_by_id(id)
            if aff:
                f.proj_id.value = aff.proj_id
                if aff.proj_id > 0:
                    # 读取项目名称
                    proj = proj_models.Project.get(aff.proj_id)
                    if proj:
                        f.proj_name.value = proj.name
                # 标题
                f.title.value = aff.title
                # 说明
                f.short_text.value = aff.short_text
                # 灵感图
                f.media_id.value = aff.media_id
                # 灵感图的路径
                f.media_url.value = utils.get_media_url(aff.media_id)
                # 更改提交按钮的文字
                f.submit.attrs['html'] = u'修改灵感'

        # 是否来自保存后转向
        ipt = web.input(saved = None)

        return render.admin.afflatus.afflatus_add(f, ipt.saved)

    def POST(self, id = '0'):
        f = afflatus_form()
        if f.validates():
            # 表单验证通过
            # 处理成功标志
            success = 'false'
            id = utils.intval(id)
            if id > 0:
                # 编辑模式：更新
                if models.update_afflatus_by_form(id, f):
                    success = 'true'
            else:
                # 添加模式
                id = models.add_afflatus_by_form(f)
                if id > 0:
                    success = 'true'

            raise web.seeother('/afflatus/edit/%s?saved=%s' % (id, success))

        # 表单验证失败
        # 记录添加/更新失败
        # 等，各种失败
        return render.admin.afflatus.afflatus_add(f)

